package cn.zhfeat.hatch.service.impl;

import java.util.List;
import javax.annotation.Resource;

import cn.zhfeat.core.base.BaseServiceImpl;
import cn.zhfeat.hatch.dao.sysuser.ISysAttributeMapper;
import cn.zhfeat.hatch.dao.sysuser.ISysRoleAttributeMapper;
import cn.zhfeat.hatch.dao.sysuser.ISysRoleAuthorityMapper;
import cn.zhfeat.hatch.dao.sysuser.ISysRoleMapper;
import cn.zhfeat.hatch.dto.sysuser.SysAttributeDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleAttributeDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleAuthorityDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleDto;
import cn.zhfeat.hatch.entity.sysuser.SysAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysRole;
import cn.zhfeat.hatch.entity.sysuser.SysRoleAttribute;
import cn.zhfeat.hatch.entity.sysuser.SysRoleAuthority;
import cn.zhfeat.hatch.service.IRoleService;
import org.springframework.stereotype.Service;


/**
 * @description: 角色相关rpc服务内部接口实现
 *
 * @author ZhangHao
 * @date 2018年5月9日 下午4:42:21 
 * @version 1.0.0.1
 */
@Service("roleService")
public class RoleServiceImpl extends BaseServiceImpl<SysRole,SysRoleDto,Long> implements IRoleService {

	@Resource
	private ISysRoleMapper sysRoleMapper;
	
	@Resource
	private ISysRoleAuthorityMapper sysRoleAuthorityMapper;
	
	@Resource
	private ISysRoleAttributeMapper sysRoleAttributeMapper;
	
	@Resource
	private ISysRoleAttributeMapper sysRoleAttributeMApper;
	
	@Resource
	private ISysAttributeMapper sysAttributeMapper;
	 
	
	/**
	 * @description: 查询角色对应的全部菜单
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:10:24 
	 * @version 1.0.0.1
	 */
	@Override
	public List<SysRoleAuthority> findSysRoleAuthorityByDto(SysRoleAuthorityDto dto) {
		return sysRoleAuthorityMapper.findSysRoleAuthorityByDto(dto);
	}


	/**
	 * @description: 增加角色和菜单的对应关系
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:30:14 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer insertSysRoleAuthority(SysRoleAuthority entity) {
		return sysRoleAuthorityMapper.insertSelective(entity);
	}

	/**
	 * @description: 根据角色id更新角色菜单对应关系，如果用户id为null或updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月8日 下午6:33:05 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateSysRoleAuthorityByDto(SysRoleAuthorityDto dto) {
		return sysRoleAuthorityMapper.updateSelectiveByDto(dto);
	}

	/**
	 * @description: 增加角色属性的对应关系
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月9日 下午3:45:27 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer insertSysRoleAttribute(SysRoleAttribute entity) {
		return sysRoleAttributeMapper.insertSelective(entity);
	}


	/**
	 * @description: 根据角色id更新角色属性对应关系，如果updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 *
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月21日 下午7:41:45 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateSysRoleAttribute(SysRoleAttribute entity) {
		return sysRoleAttributeMApper.updateByPrimaryKeySelective(entity);
	}


	/**
	 * @description: 根据条件查询数据属性
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午6:40:19 
	 * @version 1.0.0.1
	 */
	@Override
	public SysAttribute findSysAttributeByType(SysAttributeDto dto) {
		return sysAttributeMapper.findSysAttributeByType(dto);
	}

	/**
	 * @description: 根据条件定位一条角色菜单信息
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午9:03:01 
	 * @version 1.0.0.1
	 */
	@Override
	public SysRoleAuthority findSysRoleAuthorityByType(SysRoleAuthorityDto dto) {
		return sysRoleAuthorityMapper.findSysRoleAuthorityByType(dto);
	}


	/**
	 * @description: 根据条件定位一条角色数据权限信息
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月23日 下午9:04:16 
	 * @version 1.0.0.1
	 */
	@Override
	public SysRoleAttribute findSysRoleAttributeByType(SysRoleAttributeDto dto) {
		return sysRoleAttributeMapper.findSysRoleAttributeByType(dto);
	}


	/**
	 * @description: 增加一条数据属性信息
	 *
	 * @return 
	 * @author ZhangHao
	 * @date 2018年6月2日 下午3:40:59 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer insertSysAttribute(SysAttribute entity) {
		return sysAttributeMapper.insertSelective(entity);
	}

}
